let observer = require("../../../common/lib/observer").observer
let random_store = require("random_store").random_store
let ble = require("../../../util/ble")
let op_train_set = require("../../../util/op_train_set")
let mqtt = require("../../../util/mqtt")
let app = getApp()

Page(observer({
	data: {
		
	},	
	props: {
		common_store: app.data.common_store,
		store: random_store,
	},
	onShow() {
		// 更改蓝牙传输的操作
		this.props.common_store.input_code.op_type = "train_random"
		mqtt.end()
		// 检查练习器是否已经连接
		// this.check_cw_connect()
		// MQTT静音
		// 初始化训练数据
		this.init_train_data()
	},
	go_back() {
		app.go_back()
	},
	set_train_set_letter() {
		app.show_train_set_box()
	},
	check_cw_connect() {
		if(!this.props.common_store.bt_dev.c_dev.connected) {
			app.show_notice("练习器还没连接，需要连接后才能正常使用。")
		}
	},
	// 连接 / 断开 练习器
	op_cw() {
		// 断开练习器
		if(this.props.common_store.bt_dev.c_dev.connected) {
			ble.close_dev()
		}
		// 连接练习器
		else {
			// 初始化，并获取本机蓝牙状态
			ble.get_bt_state().then((res) => {
				// 如果成功，则开始搜索练习器
				ble.start_dev_discovery().then(() => {
					
				}, () => {
					app.show_notice("搜索练习器失败")
				})
			}, (res) => {
				app.show_notice("连接失败，可能是没有开启蓝牙。")
			})
		}

	},

	init_train_data() {
		app.show_notice("正在初始化，请稍后...", "waiting")
		// 设置字母集
		this.set_train_set()
	},
	set_train_set() {
		// 读取缓存中的设置
		op_train_set.init_train_set()
		// 打乱字符集顺序
		let arr = this.upset_data()
		this.props.store.train_data = []
		// 随机生成练习字符
		for (let i = 0; i < this.props.store.train_num; i++) {
			// let arr = this.upset_data()
			let c = arr[parseInt(Math.random() * ((arr.length - 1) - 0 + 1) + 0, 10)]
			this.props.store.train_data.push({ "letter": c, "state": false, "letter_style": "" })
		}
		this.props.store.current_index = 0
		// 刷新当前字符状态
		this.props.store.ref_current_state()
		app.hide_notice()
		if(this.props.common_store.train_set.letter_set.length == 0) {
			app.show_notice("训练字符集是空的，没啥能训练的，重新设置一下吧。")
		}

	},
	// 打乱字符集顺序
	upset_data() {
		// 打乱顺序
		let arr = JSON.parse(JSON.stringify(this.props.common_store.train_set.letter_set))

		let m = arr.length,
			t, i
		while (m) {
			i = Math.floor(Math.random() * m--)
			t = arr[m]
			arr[m] = arr[i]
			arr[i] = t
		}
		return arr
	},
	// 是否显示提示
	change_show_tip() {
		this.props.store.show_tip = !this.props.store.show_tip
		this.props.store.ref_tip_code()
	} 
}))